package com.elitesland.org.entity;

import com.elitesland.core.base.BaseModel;
import com.elitesland.system.annotation.Comment;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Objects;

@Entity
@Table(name = "org_ou")
@org.hibernate.annotations.Table(appliesTo = "org_ou", comment = "公司")
@Data
@DynamicInsert
@DynamicUpdate
@Accessors(chain = true)
@ApiModel(value = "公司", description = "公司")
public class OrgOuDO extends BaseModel implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("公司编号")
    @Comment("公司编号")
    @Column()
    String code;

    @ApiModelProperty("公司名称")
    @Comment("公司名称")
    @Column()
    String name;

    @ApiModelProperty("公司名称2")
    @Comment("公司名称2")
    @Column()
    String name2;

    @ApiModelProperty("公司名称3")
    @Comment("公司名称3")
    @Column()
    String name3;

    @ApiModelProperty("公司名称4")
    @Comment("公司名称4")
    @Column()
    String name4;

    @ApiModelProperty("公司简称")
    @Comment("公司简称")
    @Column()
    String abbr;

    @ApiModelProperty("字母缩写")
    @Comment("字母缩写")
    @Column()
    String abbrAlpha;

    @ApiModelProperty("公司类型")
    @Comment("公司类型")
    @Column()
    String type;

    @ApiModelProperty("公司类型2")
    @Comment("公司类型2")
    @Column()
    String type2;

    @ApiModelProperty("公司类型3")
    @Comment("公司类型3")
    @Column()
    String type3;

    @ApiModelProperty("公司状态 [UDC]COM:STATUS_ACTIVEORNO")
    @Comment("公司状态 [UDC]COM:STATUS_ACTIVEORNO")
    @Column()
    String status;

    @ApiModelProperty("公司状态2")
    @Comment("公司状态2")
    @Column()
    String status2;

    @ApiModelProperty("公司状态3")
    @Comment("公司状态3")
    @Column()
    String status3;

    @ApiModelProperty("经营单位ID")
    @Comment("经营单位ID")
    @Column()
    Long buId;

    @ApiModelProperty("经营单位ID2")
    @Comment("经营单位ID2")
    @Column()
    Long buId2;

    @ApiModelProperty("经营单位ID3")
    @Comment("经营单位ID3")
    @Column()
    Long buId3;

    @ApiModelProperty("经营单位ID4")
    @Comment("经营单位ID4")
    @Column()
    Long buId4;

    @ApiModelProperty("上级ID")
    @Comment("上级ID")
    @Column()
    Long parentId;

    @ApiModelProperty(value = "顺序号")
    @Comment("顺序号")
    @Column()
    Integer sortNo;

    @ApiModelProperty("关系路径")
    @Comment("关系路径")
    @Column()
    String path;

    @ApiModelProperty("本位币")
    @Comment("本位币")
    @Column()
    String stdCurr;

    @ApiModelProperty("财务日历编号")
    @Comment("财务日历编号")
    @Column()
    String finCalCode;

    @ApiModelProperty("地址号")
    @Comment("地址号")
    @Column()
    Long addrNo;

    @ApiModelProperty("国家 [UDC]COM:COUNTRY")
    @Comment("国家 [UDC]COM:COUNTRY")
    @Column()
    String country;

    @ApiModelProperty("省份 [UDC]COM:PROVINCE")
    @Comment("省份 [UDC]COM:PROVINCE")
    @Column()
    String province;

    @ApiModelProperty("城市")
    @Comment("城市")
    @Column()
    String city;

    @ApiModelProperty("区域")
    @Comment("区域")
    @Column()
    String region;

    @ApiModelProperty("纳税人类型")
    @Comment("纳税人类型")
    @Column()
    String taxpayerType;

    @ApiModelProperty("组织机构代码证号")
    @Comment("组织机构代码证号")
    @Column()
    String bizCodeCert;

    @ApiModelProperty("纳税人识别号")
    @Comment("纳税人识别号")
    @Column()
    String taxerCode;

    @ApiModelProperty("工商登记号")
    @Comment("工商登记号")
    @Column()
    String icRegisterNo;

    @ApiModelProperty("税务登记号")
    @Comment("税务登记号")
    @Column()
    String taxRegNo;

    @ApiModelProperty("统一信用代码")
    @Comment("统一信用代码")
    @Column()
    String uniCertNo;

    @ApiModelProperty("外部编码")
    @Comment("外部编码")
    @Column()
    String externalCode;

    @ApiModelProperty("ES1")
    @Comment("ES1")
    @Column()
    String es1;

    @ApiModelProperty("ES2")
    @Comment("ES2")
    @Column()
    String es2;

    @ApiModelProperty("ES3")
    @Comment("ES3")
    @Column()
    String es3;

    @ApiModelProperty("ES4")
    @Comment("ES4")
    @Column()
    String es4;

    @ApiModelProperty("ES5")
    @Comment("ES5")
    @Column()
    String es5;

    @ApiModelProperty("ES6")
    @Comment("ES6")
    @Column()
    String es6;

    @ApiModelProperty("ES7")
    @Comment("ES7")
    @Column()
    String es7;

    @ApiModelProperty("ES8")
    @Comment("ES8")
    @Column()
    String es8;

    @ApiModelProperty("ES9")
    @Comment("ES9")
    @Column()
    String es9;

    @ApiModelProperty("ES10")
    @Comment("ES10")
    @Column()
    String es10;


    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof OrgOuDO)) {
            return false;
        }
        if (!super.equals(o)) {
            return false;
        }
        OrgOuDO entity = (OrgOuDO) o;
        return getId().equals(entity.getId());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getId());
    }
}